Melon Usk tentou executar os dois programas a seguir, mas está confuso sobre o comportamento que observa. Enquanto o primeiro programa termina com a
e b
com valores diferentes, o segundo termina com a
e b
com o mesmo valor.
# programa 1
a = 7
b = a
a = a + 1
print(a)
print(b)
# programa 2
a = [1,2,3]
b = a
a.append(9)
print(a)
print(b)
Tente agora:
O que explica essas diferenças? Use um diagrama de ambiente para explicar.
Após a execução das duas primeiras linhas, os dois programas apresentam uma estrutura semelhante, conforme mostrado a seguir (programa 2 à esquerda e programa 1 à direita). Observe que em cada programa, tanto a
quanto b
estão associados ao mesmo objeto na memória.
A diferença aparece na linha seguinte. No programa 2, executamos a.append(9)
, que modifica a lista na memória sem alterar onde a
ou b
apontam. No programa 1, executamos a = a + 1
, que cria um novo objeto na memória (8
) e associa o nome a
a esse resultado; mas b
não mudou em nada: